﻿<?xml version="1.0" encoding="UTF-8"?>
<log4net>
 
 <!-- 
 Fichier de configuration du module Log4Posh. 
 Chaque Module utilsant Log4Posh. à son propre fichier de configuration
 
 DebugLogger pour les traces de debug techniques internes au module et
 InfoLogger pour les traces de debug fonctionnelles du traitement externes utilisant le module.
 
 Par défaut les appenders FileExternal et FileInternal utilise le même fichier.
 
 L'appender nommé Debugger est un dispositif unique pour une session 
 Windows d'une machine.
 Chaque session Powershell verra l'appender nommé Console comme un dispositif unique.  
 
 On charge le module Log4Posh dans chaque session/job Powershell.
 Chaque module utilise ce fichier de configuration dans un repository dédié, dont le nom est le nom du module.
 Par défaut, le script principal utilisera le repository 'log4net-default-repository'.
 Une session aura donc: 
   - un module log4posh chargé et donc une DLL chargée,
   - un ou plusieurs  module log4posh chargé et donc une DLL chargée,
 --> 
 <logger name="DebugLogger">
    <level value="Debug" />
    <appender-ref ref="Console" />      <!-- Appender partagé -->
    <appender-ref ref="FileInternal"/>  <!-- Appender unique -->
    <appender-ref ref="Debugger"/>      <!-- Appender partagé --> 
  </logger>
   
   <logger name="InfoLogger">
    <level value="Info" />
    <appender-ref ref="Console" />
    <appender-ref ref="FileExternal"/>
    <appender-ref ref="Debugger"/>
  </logger>
 <!--
   <logger name="InfoLogger">
    <level value="Info" />
    <appender-ref ref="Console2" />      Appender unique
    <appender-ref ref="FileExternal"/>   Appender unique
    <appender-ref ref="Debugger2"/>      Appender unique
  </logger>
 --> 
    
  <!-- Global Context properties : Owner, RunspaceId, LogJobName -->
  
  <appender name="Console" type="log4net.Appender.ManagedColoredConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-4timestamp %-5level - %message%newline" />
    </layout>
    <mapping>
        <level value="INFO" />
        <foreColor value="Cyan" />
    </mapping>
    <mapping>
        <level value="DEBUG" />
        <foreColor value="Green" />
    </mapping>
    <mapping>
        <level value="WARN" />
        <foreColor value="Yellow" />
    </mapping>
    <mapping>
        <level value="ERROR" />
        <foreColor value="Red" />
    </mapping>
    <mapping>
        <level value="FATAL" />
        <foreColor value="Black" />
        <backColor value="Red" />        
    </mapping>  
    <threshold value="OFF"/>    
  </appender>

  <appender name="FileInternal" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="%env{TEMP}\\DefaultLog4Posh-%property{Owner}-%property{LogJobName}-%date{ddMMyyyyHHmmss}.log"/>
    <param name="AppendToFile" value="true"/>
    <rollingStyle value="Size"/>
    <maxSizeRollBackups value="5"/>
    <maximumFileSize value="2MB"/>
    <staticLogFileName value="true"/>
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="[PID:%property{Owner}] [%property{LogJobName}] %-5level %d{yyyy-MM-dd hh:mm:ss} – %message%newline"/>
    </layout>
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  </appender>
  
  <appender name="FileExternal" type="log4net.Appender.RollingFileAppender">
    <!-- Exemple de nom par défaut :  
     C:\Users\User\AppData\Local\Temp\DefaultLog4Posh-2224-ConsoleHost-17032014093932
    -->
    <file type="log4net.Util.PatternString" value="%env{TEMP}\\DefaultLog4Posh-%property{Owner}-%property{LogJobName}-%date{ddMMyyyyHHmmss}.log"/>
    <param name="AppendToFile" value="true"/>
    <rollingStyle value="Size"/>
    <maxSizeRollBackups value="5"/>
    <maximumFileSize value="2MB"/>
    <staticLogFileName value="true"/>
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="[PID:%property{Owner}] [%property{LogJobName}] %-5level %d{yyyy-MM-dd hh:mm:ss} – %message%newline"/>
    </layout>
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  </appender>  
  
  <appender name="Debugger" type="log4net.Appender.OutputDebugStringAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%property{LogJobName} %-5level %d{yyyy-MM-dd hh:mm:ss} - %message%newline"/>
    </layout>
    <threshold value="OFF"/>  
  </appender>
</log4net>
